package com.cnbot.toolkit.log;

import android.util.Log;


/**
 *  @项目名：  ToolKitModel
 *  @包名：    com.cnbot.toolkit.file
 *  @文件名:   FileUtil
 *  @创建者:   ww
 *  @创建时间:  2019/11/13 9:41
 *  @描述：    支持开关控制的日志打印工具，不支持写入文件
 */
public final class Logger {
	/**
	 * app日志标签
	 */
	public static final String TAG = "Logger";

	/**
	 * 打印日志控制开关
	 */
	private static boolean LOG_FLAG = true;

	static boolean VERBOSE = true;

	static boolean DEBUG = true;

	static boolean INFO = true;

	static boolean WARN = true;

	static boolean ERROR = true;

	private Logger() {
	}

	/**
	 * 开启和关闭日志打印
	 * @param result
	 */
	public static void setLogTag(boolean result) {
		LOG_FLAG = result;
		VERBOSE = VERBOSE && LOG_FLAG;
		DEBUG = DEBUG && LOG_FLAG;
		INFO = INFO && LOG_FLAG;
		WARN = WARN && LOG_FLAG;
		ERROR = ERROR && LOG_FLAG;
	}

	/**
	 * 关闭日志打印
	 */
	public static void close(){
		setLogTag(false);
	}

	public static void v(String tag, String msg, Throwable th) {
		if (VERBOSE && LOG_FLAG) {
			Log.v(tag, msg, th);
		}
	}

	public static void d(String tag, String msg, Throwable th) {
		if (DEBUG && LOG_FLAG) {
			Log.d(tag, msg, th);
		}
	}

	public static void i(String tag, String msg, Throwable th) {
		if (INFO && LOG_FLAG) {
			Log.i(tag, msg, th);
		}
	}

	public static void w(String tag, String msg, Throwable th) {
		if (WARN && LOG_FLAG) {
			Log.w(tag, msg, th);
		}
	}

	public static void e(String tag, String msg, Throwable th) {
		if (ERROR && LOG_FLAG) {
			Log.e(tag, msg, th);
		}
	}

	public static void v(String tag, String msg) {
		if (VERBOSE && LOG_FLAG) {
			Log.v(tag, msg);
		}
	}

	public static void d(String tag, String msg) {
		if (DEBUG && LOG_FLAG) {
			Log.d(tag, msg);
		}
	}

	public static void i(String tag, String msg) {
		if (INFO && LOG_FLAG) {
			Log.i(tag, msg);
		}
	}

	public static void w(String tag, String msg) {
		if (WARN && LOG_FLAG) {
			Log.w(tag, msg);
		}
	}

	public static void e(String tag, String msg) {
		if (ERROR && LOG_FLAG) {
			Log.e(tag, msg);
		}
	}

	public static void v(String msg) {
		if (VERBOSE && LOG_FLAG) {
			Log.v(TAG, msg);
		}
	}

	public static void d(String msg) {
		if (DEBUG && LOG_FLAG) {
			Log.d(TAG, msg);
		}
	}

	public static void i(String msg) {
		if (INFO && LOG_FLAG) {
			Log.i(TAG, msg);
		}
	}

	public static void w(String msg) {
		if (WARN && LOG_FLAG) {
			Log.w(TAG, msg, null);
		}
	}

	public static void e(String msg) {
		if (ERROR && LOG_FLAG) {
			Log.e(TAG, msg, null);
		}
	}
}
